/******************************************************
*  Copyright(c) pages.ilovezxl.top
*  FileName :cli_tty.c
*  Author : rivulet.dave
*  Description : shell输入、输出
*  Data : 2019-04-15
******************************************************/

/*********************************************************************
 * INCLUDES
 */

#include "stdrope.h"

#include "sallib.h"
#include "salagent.h"

#if (SAL_CLI == _ENABLE)

#include "cli_tty.h"

#if (SAL_TTY_PRODUCER == _TTY_SOCK_)
#include "cli_tty_socket.h"
#endif

/*********************************************************************
 *  EXTERNAL VARIABLES
 */

/*********************************************************************
 * MACROS
 */


/*********************************************************************
 * TYPES
 */


/*********************************************************************
 * FUNCTIONS DECLARE
 */


/*********************************************************************
 *  VARIABLES
 */

static TTY_BASE_S *s_pstTTYBaseObject = NULL;

/*********************************************************************
 * FUNCTIONS
 */

/**
 *   @Description: TTY初始化
 *   @param : NA
 *   @return: NA
 */
void TTY_Init(void)
{
#if (SAL_TTY_PRODUCER == _TTY_SOCK_)
    s_pstTTYBaseObject = TTY_SocketObjNew();
#endif
}

/**
 *   @Description: TTY去初始化
 *   @param : NA
 *   @return: NA
 */
void TTY_DeInit(void)
{
#if (SAL_TTY_PRODUCER == _TTY_SOCK_)
    TTY_SocketObjDel();
#endif
    s_pstTTYBaseObject = NULL;
}

/**
 *   @Description: 获取命令行
 *   @param : pData - 出参，命令行缓存
 *   @param : uiLen - 入参，缓存长度
 *   @return: _OK/_ERR 
 */
int32_t TTY_CliGets(char *pData, uint32_t uiLen)
{
    if (!s_pstTTYBaseObject || !s_pstTTYBaseObject->pfTTYGets)
    {
        return _ERR;
    }
    return s_pstTTYBaseObject->pfTTYGets(pData, uiLen);
}

/**
 *   @Description: 发送命令行
 *   @param : pData - 入参，发送的命令行数据
 *   @param : uiLen - 入参，命令行数据长度
 *   @return: _OK/_ERR
 */
int32_t TTY_CliPuts(char *pData, uint32_t uiLen)
{
    if (!s_pstTTYBaseObject || !s_pstTTYBaseObject->pfTTYPuts)
    {
        return _ERR;
    }
    return s_pstTTYBaseObject->pfTTYPuts(pData, uiLen);
}

#endif  //(SAL_CLI == _ENABLE)




